package com.jwater.core.manager.common.service;

import com.jwater.core.manager.common.model.*;

import java.util.List;

/**
 * @description: 核心服务rpc接口
 * @author: jnner
 * @createDate: 2021/2/5
 * @version: 1.0
 */
public interface JwaterService {
    /**
     * 获取工作进程配置
     *
     * @param regionName
     * @param deployName
     * @param groupName
     * @param workerName
     * @return
     */
    public WorkerInfo getWorkerInfo(String regionName, String deployName, String groupName, String workerName);

    /**
     * 获取工作进程列表
     *
     * @param regionName
     * @return
     */
    public List<WorkerInfo> getWorkerList(String regionName);

    /**
     * 获取工作进程配置文件列表
     *
     * @param regionName
     * @param deployName
     * @return
     */
    public List<String> getWorkerConfList(String regionName, String deployName);

    /**
     * 获取工作进程配置文件根目录列表
     *
     * @param regionName
     * @param deployName
     * @return
     */
    public List<String> getWorkerConfRoot(String regionName, String deployName);

    /**
     * 启动工作进程
     *
     * @param regionName
     * @param deployName
     * @param groupName
     * @param workerName
     * @param index
     */
    public void startWorker(String regionName, String deployName, String groupName, String workerName, int index);

    /**
     * 停止工作进程
     *
     * @param regionName
     * @param deployName
     * @param groupName
     * @param workerName
     * @param index
     */
    public void stopWorker(String regionName, String deployName, String groupName, String workerName, int index,
                           boolean isForce);

    /**
     * 获取定时任务列表信息
     *
     * @param regionName
     * @return
     */
    public List<JobInfo> getJobList(String regionName);

    /**
     * 启动定时任务调度器
     *
     * @param regionName
     * @param deployName
     * @param groupName
     * @param jobName
     */
    public void startJob(String regionName, String deployName, String groupName, String jobName);

    /**
     * 停止定时任务调度器
     *
     * @param regionName
     * @param deployName
     * @param groupName
     * @param jobName
     */
    public void stopJob(String regionName, String deployName, String groupName, String jobName);

    /**
     * 运行定时任务
     *
     * @param regionName
     * @param deployName
     * @param groupName
     * @param jobName
     * @param time
     */
    public void runJob(String regionName, String deployName, String groupName, String jobName, long time);

    /**
     * 杀死定时任务
     *
     * @param regionName
     * @param deployName
     * @param groupName
     * @param jobName
     */
    public void killJob(String regionName, String deployName, String groupName, String jobName);

    /**
     * 重新解析配置
     *
     * @param regionName
     */
    public void loadConf(String regionName);

    /**
     * 获取所有主机信息
     *
     * @return
     */
    public List<SystemInfo> getAllSystemInfo();

    /**
     * 移除报警信息
     *
     * @param type
     */
    public void removeAlarmInfo(String type);

    /**
     * 获取所有报警信息
     *
     * @return
     */
    public List<AlarmInfo> getAllAlarmInfo();

    /**
     * 获取安装包信息
     *
     * @return
     */
    public List<PackageInfo> getPackageInfo();

    /**
     * @param gatewayGroupName
     * @return
     */
    public List<GatewayProxyInfo> getGatewayProxyInfo(String gatewayGroupName, String gatewayWorkerName);

    /**
     * @param gatewayGroupName
     * @param gatewayWorkerName
     * @return
     */
    public List<GatewayProxyInfo> getGatewayProxyInfo(String gatewayGroupName, String gatewayWorkerName, int gatewayIndex,
                                                      String gatewayRegionName, String gatewayDeployName);
}
